﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel;
using System.Web.Mvc;
using Tecnosop.Dominio;

namespace Tecnosop.WebUI.Models
{
    //public class FacturasViewModel
    //{
    //    public IEnumerable<FACTURA_CONVENIO> FacturasConvenios { get; set; }
    //    public IEnumerable<FACTURA_VENTA_DIRECTA> FacturasVentaDirecta { get; set; }
    //}

    public class CreateFacturaStep1ViewModel
    {
        [DisplayName("Número de factura")]
        [Required(ErrorMessage = "Ingrese el número de la factura")]
        [Remote("ValidaNumeroFacturaUnico", "Facturas", AdditionalFields = "EsRazonSocialTecnosop"/*, ErrorMessage = "El número de factura ingresado ya fue ocupado para otra factura."*/)]
        public int NumeroFactura { get; set; }

        [DisplayName("Rut cliente")]
        public string RutCliente { get; set; }

        [DisplayName("Nombre cliente")]
        public string NombreCliente { get; set; }

        [DisplayName("Razón social")]
        [Required(ErrorMessage = "Ingrese una {0}")]
        public bool EsRazonSocialTecnosop { get; set; }

        [DisplayName("Tipo factura")]
        [Required(ErrorMessage = "Ingrese un tipo de factura")]
        public bool EsFacturaConvenio { get; set; }
    }

    [Bind(Prefix = "Factura")]
    public class FacturaInsiderViewModel
    {
        public DateTime FECHA_INSTALACION { get; set; }

        public string COND_DE_VENTA { get; set; }
    }

    public class BusquedaFacturaViewModel
    {
        [DisplayName("Criterios de búsqueda")]
        [UIHint("Enum")]
        //[DataType("Criterios")]
        public CriteriosDeBusquedaFactura Criterios { get; set; }

        [Required(ErrorMessage = "Debe ingresar algún término para la búsqueda")]
        [Remote("ValidaBusquedaVacia", "Facturas", AdditionalFields = "Criterios", ErrorMessage = "No se encontraron resultados.")]
        public string AreaBusqueda { get; set; }

        //public DateTime FechaInicio { get; set; }

        //public DateTime FechaFinal { get; set; }
    }

    public class BusquedaAvanzadaFacturaViewModel
    {
        [DisplayName("Criterios de búsqueda")]
        [UIHint("Enum")]
        //[DataType("Criterios")]
        public CriteriosDeBusquedaFactura Criterios { get; set; }

        [Required(ErrorMessage = "Debe ingresar algún término para la búsqueda")]
        //[Remote("ValidaBusquedaVacia", "Facturas", AdditionalFields = "Criterios", ErrorMessage = "No se encontraron resultados.")]
        public string AreaBusqueda { get; set; }

        public DateTime FechaInicio { get; set; }

        public DateTime FechaFinal { get; set; }
    }

    public class ActualizarUFViewModel
    {
        [DisplayName("Valor de la UF")]
        [Required(ErrorMessage = "Ingrese un valor para la UF")]
        [DisplayFormat(DataFormatString = "{0:#,##}", ApplyFormatInEditMode = true, ConvertEmptyStringToNull = true, NullDisplayText = "$ 0")]
        public int ValorUF { get; set; }
    }

    public class ResultadoBusquedaFacturaViewModel
    {
        public IEnumerable<FACTURA> Resultado { get; set; }
        public string CriterioParaOrdenar { get; set; }
    }

    public class ResultadoBusquedaAvanzadaFacturaViewModel
    {
        public IEnumerable<FACTURA> Resultado { get; set; }
        public DateTime FechaInicio { get; set; }
        public DateTime FechaFinal { get; set; }
        public string CriterioParaOrdenar { get; set; }
        public string AreaBusqueda { get; set; }
    }

    public enum CriteriosDeBusquedaFactura
    {
        [Description("Número de factura")]
        NumeroFactura,
        [Description("Nombre cliente")]
        NombreCliente,
        [Description("Rut cliente")]
        RutCliente,
        [Description("Número de convenio")]
        NumeroConvenio
    }
}